package com.boyu.crm.marketing.coupon.domain.vo;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.boyu.crm.marketing.coupon.domain.StoreCoupon;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 优惠券视图对象 crm_store_coupon
 *
 * @author xtzyb
 * @date 2023-11-03
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = StoreCoupon.class)
public class StoreCouponVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 优惠券名称
     */
    @ExcelProperty(value = "优惠券名称")
    private String name;

    /**
     * 兑换的优惠券面值
     */
    @ExcelProperty(value = "兑换的优惠券面值")
    private BigDecimal money;

    /**
     * 是否限量, 默认0 不限量， 1限量
     */
    @ExcelProperty(value = "是否限量, 默认0 不限量， 1限量")
    private Integer isLimited;

    /**
     * 发放总数
     */
    @ExcelProperty(value = "发放总数")
    private Long total;

    /**
     * 剩余数量
     */
    @ExcelProperty(value = "剩余数量")
    private Long lastTotal;

    /**
     * 使用类型 1 全场通用, 2 商品券, 3 品类券
     */
    @ExcelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券")
    private Integer useType;

    /**
     * 所属商品id / 分类id
     */
    @ExcelProperty(value = "所属商品id / 分类id")
    private String primaryKey;

    /**
     * 最低消费，0代表不限制
     */
    @ExcelProperty(value = "最低消费，0代表不限制")
    private BigDecimal minPrice;

    /**
     * 可领取开始时间
     */
    @ExcelProperty(value = "可领取开始时间")
    private Date receiveStartTime;

    /**
     * 可领取结束时间
     */
    @ExcelProperty(value = "可领取结束时间")
    private Date receiveEndTime;

    /**
     * 是否固定使用时间, 默认0 否， 1是
     */
    @ExcelProperty(value = "是否固定使用时间, 默认0 否， 1是")
    private Integer isFixedTime;

    /**
     * 可使用时间范围 开始时间
     */
    @ExcelProperty(value = "可使用时间范围 开始时间")
    private Date useStartTime;

    /**
     * 可使用时间范围 结束时间
     */
    @ExcelProperty(value = "可使用时间范围 结束时间")
    private Date useEndTime;

    /**
     * 天数
     */
    @ExcelProperty(value = "天数")
    private Integer day;

    /**
     * 优惠券类型 1 手动领取, 2 新人券, 3 赠送券
     */
    @ExcelProperty(value = "优惠券类型 1 手动领取, 2 新人券, 3 赠送券")
    private Integer type;

    /**
     * 排序
     */
    @ExcelProperty(value = "排序")
    private Long sort;

    /**
     * 状态（0：关闭，1：开启）
     */
    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=：关闭，1：开启")
    private Integer status;


}
